/*

* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Smart-Shop开源商城系统/ Java商城-首选电商平台系统 请务必保留此注释头信息
* |     开源地址: https://gitee.com/ningbo-qishan/gruul-mall
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     可正常分享和学习源码,未经授权 不可商用！
* |     商业版中台购买/开源版商业授权 联系技术客服
* |     官网:  https://www.73app.cn/
* ------------------------------------------------------------------------
* ------------------------------------------------------------------------
* |     Copyright (c) 2016-2999 宁波启山智软科技有限公司
* |     版权所有 ,侵权必究！
* ------------------------------------------------------------------------

*/
package com.medusa.gruul.goods.service.manager;

import com.baomidou.mybatisplus.extension.service.IService;
import com.medusa.gruul.goods.api.entity.ProductSpec;
import com.medusa.gruul.goods.api.model.vo.manager.ProductSpecVo;
import com.medusa.gruul.goods.api.model.vo.manager.ProductSpecsAndSkusVo;

import java.util.List;

/**
 * 商品规格查询service
 */
public interface IProductSpecService extends IService<ProductSpec> {



    /**
     * 根据商品id查询规格树结构
     *
     * @param productId 商品id
     * @param parentId  父规格id 规格组为0
     */
    List<ProductSpecVo> getProductSpecs(Long productId, Long parentId);

    /**
     * 新增规格结构
     * @param productId  商品id
     * @param parentId  父规格id 传0为规格组
     * @param specs 商品规格列表
     */
    void saveProductSpecs(Long productId, Long parentId, List<ProductSpec> specs);


    /**
     * 更新规格结构
     * @param productId  商品id
     * @param parentId  父规格id 传0为规格组
     * @param specs 商品规格列表
     */
    void updateProductSpecs(Long productId, Long parentId, List<ProductSpec> specs);

    /**
     * 获取商品规格列表与商品sku列表
     * @param productId 商品id
     */
    ProductSpecsAndSkusVo getSpecsAndSkusByProductId(Long productId);

}
